package com.sunedai.tiger.dao.system;

import com.sunedai.tiger.dao.system.entity.Dictionary;

import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.repository.Repository;

import java.util.List;

/**
 * 数据字典dao层
 * @author zhaolipeng
 */
public interface DictionaryDao extends Repository<Dictionary, Long>{

  /**
   * 保存或更新数据字典
   * @param dictionary -- 数据字典实体
   * @return 新的数据字典实体
   */
  Dictionary save(Dictionary dictionary);

  /**
   * 查找所有的数据字典
   * @param pageable -- 分页参数
   * @return 数据字典集合
   */
  Page<Dictionary> findAll(Pageable pageable);

  /**
   * 通过类型和代码值查找数据字典
   * @param type -- 类型
   * @param code -- 代码
   * @return 数据字典实体
   */
  Dictionary findByTypeAndCode(String type, String code);

  /**
   * 查找同一类型的数据字典
   * @param type -- 类型
   * @return 数据字典集合
   */
  List<Dictionary> findByType(String type);

  /**
   * 统计数据字典总数
   * @return 总数
   */
  long count();
}
